package com.zackeus.mvvm.api.annotation;

import com.zackeus.mvvm.api.interceptor.logging.Level;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Retrofit 注解封装
 * @name: API
 * @author: zz
 * @date: 2022/8/29
 */
@Documented
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface API {

    String baseURL();

    /* 超时参数 */
    long connectTimeout() default 10;
    long readTimeout() default 15;
    long writeTimeout() default 15;

    /* 是否启用日志 */
    boolean logEnable() default true;
    /* 日志级别 */
    Level logLevel() default Level.BASIC;
    /* 仅在debug环境启用日志 */
    boolean logDebugOnly() default true;

    /* 是否启用无网络缓存 */
    boolean cacheEnable() default false;

    /* 连接池配置 maxIdleConnections设为0则禁用连接池 */
    int maxIdleConnections() default 0;
    long keepAliveDuration() default 15;

}
